/*
  大整数加法
  题目描述
    求两个不超过 200 位的非负整数的和。
  输入
    有两行，每行是一个不超过 200 位的非负整数，可能有多余的前导 0。
  输出
    一行，即相加后的结果。结果里不能有多余的前导 0，即如果结果是 342，那么就不能输出为 0342。
  样例输入
    22222222222222222222
    33333333333333333333
  样例输出
    55555555555555555555
*/

#include <bits/stdc++.h>

using namespace std;

int main() {
    string a, b;

    cin >> a >> b;

    // 1. 对位
    //    (保证 a 和 b 的字符串长度相同)
    while (a.size() > b.size()) {
        b = '0' + b; // 在字符串的左边补'0'
    }
    while (a.size() < b.size()) {
        a = '0' + a; // 在字符串的左边补'0'
    }

    // 2. 倒序相加 (考虑进位问题)
    int jw = 0; // 进位
    string c;   // 目标字符串, 存放大数 a 和 b 相加后的结果
    for (int i = a.size() - 1; i >= 0; i--) { // 注意: 这里是倒序相加!
        int a1 = a[i] - '0';
        int b1 = b[i] - '0';

        int xi = (a1 + b1 + jw) % 10; // 计算相加后倒数第 i 位的值
        jw = (a1 + b1 + jw) / 10;     // 计算倒数第 i 位相加后，进位的值。0 -- 不用进位, 1 -- 向前进一位
        char xi1 = xi + '0';
        c = xi1 + c;
    }

    if (jw != 0) { // 注意: 前面最后一轮循环结束后, 如果 jw 不等于 0，则最终的结果需要进位! 例如: 1 + 99 = 100
        c = '1' + c;
    }

    // 3. 去除多余的前导 '0'
    while (c.size() > 1 && c[0] == '0') {
        c.erase(0, 1);
    }

    // 4. 输出表示最终结果的字符串
    cout << c;

    return 0;
}